const ws = require('nodejs-websocket')
const PORT = 3003
const TYPE_ENTER = 0
const TYPE_LEAVE = 1
const TYPE_MSG = 2

//1. 记录当前连接上来的总的用户数量
let count = 0
//2.conn每个连接到服务器的用户，都会有一个conn
const server = ws.createServer(conn => {
    console.log('有用户进来')
    count++
    conn.userName = `用户${count}`

    broadcast({
        type:TYPE_ENTER,
        msgg:`${conn.userName}进入了聊天室`,
        time:new Date().toLocaleTimeString()
    })

    //每当接收到用户传递过来的数据，这个text事件会被触发
    conn.on('text',data =>{
        console.log('接受到用户的数据',data)  
        broadcast({
            type:TYPE_MSG,
            msgg:data,
            time:new Date().toLocaleTimeString()
        })
    })

    conn.on('close',() => {
        console.log('连接断开了')
        count--
        broadcast({
            type:TYPE_LEAVE,
            msgg:`${conn.userName}离开了聊天室`,
            time:new Date().toLocaleTimeString()
        })

    })
    conn.on('error',() => {
        console.log('用户连接异常')
    }) 
})

// 通过广播，给所有的用户发送消息
function broadcast(msgg){
    //server.connections:表示所有用户
    server.connections.forEach(item => {
        item.send(JSON.stringify(msgg))
    })
}
server.listen(PORT,() => {
    console.log('websocket服务启动成功了,监听了端口' + PORT)
})